package metier.outils;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import metier.modele.Figure;

import client.JCanvas;

/**
 * Classe permettant l'export en BMP d'une liste de figures
 * @author Quentin, Vincent, Charlie
 *
 */
public class ExportBMP
{
	private File fichier;
	private JCanvas canvas;

	
	/**
	 * Constructeur
	 * @param fichier
	 * @param canvas
	 */
	public ExportBMP (File fichier, JCanvas canvas)
	{
		this.fichier = fichier;
		this.canvas = canvas;
	}
	
	
	/**
	 * Exportation
	 * @return true si OK, false sinon
	 */
	public boolean export()
	{
		// On récupère la largeur / hauteur du canvas
		int width = canvas.getSize().width;
		int height = canvas.getSize().height;
		
		// On instancie un objet 'BufferedImage' en type RGB
		BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		
		// On récupère le graphique (pour pouvoir dessiner dedans)
		Graphics g = bufferedImage.getGraphics();
		
		// Astuce, on créé un rectangle blanc de dimensions
		// 'width' et 'height' pour le fond
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, width, height);
		
		// On parcours la liste des figures
		for (Figure figure : canvas.getList())
		{
			// On trace la figure sur le graphique 'g'
			figure.tracer(g, true, false, figure.getOwner().getColor());
		}
		
		try {
			// On tente d'exporter le résultat au format 'BMP' dans 'fichier'
			ImageIO.write(bufferedImage, "BMP", fichier);
			return true;
		} catch (IOException e) {
		//	e.printStackTrace();
			
			return false;
		}
		
	}
		
}
